﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Styx.Helpers;
using System.IO;
using Styx;
using Styx.Common;
using System.ComponentModel;
using DefaultValue = Styx.Helpers.DefaultValueAttribute;
using Styx.TreeSharp;

namespace HunterBM
{
    public class CRSettingsBM : Settings
    {
        public static readonly CRSettingsBM myPrefs = new CRSettingsBM();

        public CRSettingsBM()
            : base(
                Path.Combine(Utilities.AssemblyDirectory,
                    string.Format(@"Routines/Settings/Config/Pasterke/{0}/Hunter/HunterSettingsBM-{1}.xml", StyxWoW.Me.RealmName, StyxWoW.Me.Name))
                )
        {
        }

        public enum Keypress
        {
            NONE,
            LSHIFT,
            RSHIFT,
            LCTRL,
            RCTRL,
            LALT,
            RALT
        };

        [Setting]
        [DefaultValue(Keypress.NONE)]
        [Category("Extra's")]
        [DisplayName("Pause Aoe Key")]
        [Description("Pause Aoe Key")]
        public Keypress StopAoeKey { get; set; }

        [Setting]
        [DefaultValue(Keypress.NONE)]
        [Category("Extra's")]
        [DisplayName("Pause CR Key")]
        [Description("Pause CR Key")]
        public Keypress StopCRKey { get; set; }

        [Setting]
        [DefaultValue(true)]
        [Category("Extra's")]
        [DisplayName("Print Raidstyle Messages")]
        public bool PrintRaidstyleMsg { get; set; }

        [Setting]
        [DefaultValue(3)]
        [Category("Hunter")]
        [DisplayName("Adds to start Aoe")]
        public int StartAoe { get; set; }

        public enum Talent75
        {
            None,
            A_Murder_of_Crows,
            Lynx_Rush
        }

        [Setting]
        [DefaultValue(Talent75.None)]
        [Category("Hunter")]
        [DisplayName("Tier 5")]
        [Description("For Blink Strikes choose None")]
        public Talent75 useTalent75 { get; set; }

        [Setting]
        [DefaultValue(false)]
        [Category("Hunter")]
        [DisplayName("Blood Fury")]
        [Description("Use Blood Fury")]
        public bool useBloodFury { get; set; }

        [Setting]
        [DefaultValue(false)]
        [Category("Hunter")]
        [DisplayName("Virmen Potions")]
        [Description("Use Virmen Potions on Bossfights")]
        public bool useVirmenPotions { get; set; }

        [Setting]
        [DefaultValue(false)]
        [Category("Hunter")]
        [DisplayName("Lifeblood")]
        [Description("Use Lifeblood on Bossfights")]
        public bool useLifeblood { get; set; }

        [Setting]
        [DefaultValue(false)]
        [Category("Hunter")]
        [DisplayName("Berserking")]
        [Description("Use Berserking")]
        public bool useBerserking { get; set; }

        [Setting]
        [DefaultValue(75)]
        [Category("Hunter")]
        [DisplayName("Arcane Shot Focus")]
        [Description("Use Arcane Shot above Focus %")]
        public int useMendPet { get; set; }

        [Setting]
        [DefaultValue(45)]
        [Category("Hunter")]
        [DisplayName("Mend Pet %")]
        [Description("Use Mend Pet when Pet HP below %")]
        public int useArcaneFocus { get; set; }

        [Setting]
        [DefaultValue(55)]
        [Category("Hunter")]
        [DisplayName("Healthstone HP %")]
        [Description("Use Healthstone below HP %")]
        public int useHealthstone { get; set; }

        public enum Traps
        {
            Never,
            Always,
            BossOnly
        }

        [Setting]
        [DefaultValue(Traps.Never)]
        [Category("Hunter")]
        [DisplayName("Explosive Trap")]
        [Description("Single Target Explosive Trap Use")]
        public Traps useExploTrap { get; set; }

        public enum Talent90
        {
            Glaive_Toss,
            Barrage,
            Powershot
        }

        [Setting]
        [DefaultValue(Talent90.Glaive_Toss)]
        [Category("Hunter")]
        [DisplayName("Tier 6")]
        [Description("Wich talent to use")]
        public Talent90 useTalent90 { get; set; }

        public enum Talent60
        {
            Fervor,
            Dire_Beast,
            Thrill_of_the_Hunt
        }

        [Setting]
        [DefaultValue(Talent60.Dire_Beast)]
        [Category("Hunter")]
        [DisplayName("Tier 4")]
        [Description("Wich talent to use")]
        public Talent60 useTalent60 { get; set; }

        [Setting]
        [DefaultValue(35)]
        [Category("Hunter")]
        [DisplayName("Tier 6 Fervor %")]
        [Description("Use Fervor below Focus %")]
        public int useTalent60Focus { get; set; }
    }
}
